import check from './check.js'

/**
 * 显示Toast
 * @param {String} title Toast标题  
 * @param {String} icon success,error,loading(支付宝小程序不支持),none,fail(支付宝小程序支持),exception(支付宝小程序支持)
 * @param {Number} duration 延迟时长
 * @param {String} image 本地图标路径，优先级高于icon
 */
export function showToast(title, icon = 'none', duration, image) {
	if (!title) {
		return
	}
	uni.showToast({
		title,
		// #ifdef H5 || MP-WEIXIN
		icon: icon ? (['fail', 'exception'].includes(icon) ? 'error' : icon) : 'none',
		image,
		// #endif

		// #ifdef MP-ALIPAY
		icon: (!icon || icon === 'loading') ? 'none' : (icon === 'error' ? 'fail' : icon),
		// #endif
		duration: duration ?? 2000
	})
}

/**
 * 隐藏Toast
 */
export function hideToast() {
	uni.hideToast()
}

/**
 * 显示加载中Toast
 * @param {String} title Toast标题
 */
export function showLoading(title) {
	uni.showLoading({
		title: title ?? '加载中',
		// #ifdef H5 || MP-WEIXIN
		mask: true
		// #endif
	})
}

/**
 * 隐藏加载中Toast
 */
export function hideLoading() {
	uni.hideLoading()
}

/**
 * 显示异常Toast
 * @param {String} message 异常提示信息
 */
export function showException(message, imageUrl) {
	showToast(normalizeMessage(message, '网络异常'), 'error', 2500, imageUrl);
}

export function normalizeMessage(message, defaultMessage) {
	if (check.isChinese(message)) {
		return message;
	} else if (_.startsWith(message, "request:fail")) {
		return '通讯失败,请检查网络是否正常'
	} else {
		return defaultMessage;
	}
}

/**
 * 调用模态弹窗
 * @param {Object} params
 */
export function showModal(params) {
	let defaultParams = {
		title: '提示',
		content: '',
		confirmColor: '#5769AF'
	}
	let options = Object.assign(defaultParams, params);
	uni.showModal(options);
}